package com.nai365.nart.blockchain.service;

import com.nai365.nart.blockchain.dto.*;
import com.nai365.nart.blockchain.entity.DdcTransferRequest;
import com.nai365.nart.common.core.util.R;

public interface DDCService {
	/**
	 * 铸币
	 *
	 * @param coinDDCDto
	 * @return
	 */
	CoinDDCResultDto coin(CoinDDCDto coinDDCDto) throws Exception;


	/**
	 * 售卖，适用一级市场
	 *
	 * @param sellInDto
	 * @return
	 */
	SellOutDto sell(SellInDto sellInDto) throws Exception;


	/**
	 * 转账，适用二级市场或转赠
	 *
	 * @param transferInDto
	 * @return
	 * @throws Exception
	 */
	TransferOutDto transfer(TransferInDto transferInDto) throws Exception;


	/**
	 * 转账，适用二级市场或转赠
	 *
	 * @param request DdcTransferRequest
	 * @return DdcTransferRequest
	 * @throws Exception
	 */
	DdcTransferRequest transferByRequest(DdcTransferRequest request) throws Exception;


	/**
	 * 转账，适用二级市场或转赠
	 *
	 * @param burnInDto
	 * @return
	 * @throws Exception
	 */
	BurnOutDto burn(BurnInDto burnInDto) throws Exception;


	String setApprovalForAll() throws Exception;

	/**
	 * 生成转账请求
	 *
	 * @param transferDto 转账参数
	 * @return 转账请求
	 */
	DdcTransferRequest generateTransferRequest(TransferDto transferDto);
}
